cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(HelloWorld LANGUAGES CXX)

# 设置 C++ 标准 (可选，但推荐)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 添加包含目录，以便编译器能够找到 Message.hpp
include_directories(${CMAKE_SOURCE_DIR}/include)

# 创建一个OBJECT目标
add_library(message-objs
  OBJECT
    src/message.cpp
    include/message.hpp
)

# 确保编译的目标文件与生成位置无关
# 对于较旧的编译器或某些平台，可能需要显式设置此属性
set_target_properties(message-objs PROPERTIES POSITION_INDEPENDENT_CODE ON)

# 使用 OBJECT 库创建共享库
add_library(message-shared SHARED $<TARGET_OBJECTS:message-objs>)

# 使用 OBJECT 库创建静态库
add_library(message-static STATIC $<TARGET_OBJECTS:message-objs>)

# 添加可执行文件，并链接 MessageLib 库
add_executable(helloWorld helloWorld.cpp)

# 将可执行文件链接到消息库的静态版本
target_link_libraries(helloWorld message-static)  